Multi-dimensional images need to be rendered onto two dimensional displays in many situations such as for medical imaging, mechanical engineering, scientific visualization, computer games and other applications. For example, volume rendering algorithms take an input signal defined on a three-dimensional domain and project it onto a two-dimensional image.
Various techniques are known for rendering three dimensional and higher dimensional images onto two dimensional displays. For example ray-casting involves tracing the path of light through pixels in an image plane into a three dimensional volume. The three dimensional volume may have been obtained empirically using measurement equipment such as an MRI scanner or image capture device. However, ray-casting is extremely computationally expensive and time consuming as it involves integrating data at each point along each ray. This has meant that many practical applications that use ray-casting have typically rendered images slowly ahead of time. Also, typically only the surfaces of objects in the volume have been rendered in order to cut down on the amount of computation required. In the case of medical imaging applications this has led to omission of context providing detail in the resulting two dimensional images and this makes it harder for medical staff to understand and interpret the rendered images.
Some techniques for speeding up ray-casting have been proposed such as empty space skipping using depth-first tree searches. These techniques are designed for execution on CPUs.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known multi-dimensional image rendering systems using space skipping.